#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Feature {
    ShortOpenTag,
    NullCoalesceAssign,
    ParameterContravariance,
    ReturnCovariance,
    PregUnmatchedAsNull,
    NonCapturingCatches,
    NativeUnionTypes,
    RequiredParameterAfterOptional,
    LessOverriddenParametersWithVariadic,
    ThrowExpression,
    ClassConstantOnExpression,
    PromotedProperties,
    NamedArguments,
    ThrowsTypeErrorForInternalFunctions,
    ThrowsValueErrorForInternalFunctions,
    HHPrintfSpecifier,
    StricterRoundFunctions,
    ThrowsOnInvalidMbStringEncoding,
    WarnsAboutFinalPrivateMethods,
    CallableInstanceMethods,
    LegacyConstructor,
    UnsetCast,
    CaseInsensitiveConstantNames,
    InterfaceConstantImplicitlyFinal,
    ArrayFunctionsReturnNullWithNonArray,
    SubstrReturnFalseInsteadOfEmptyString,
    CurlUrlOptionCheckingFileSchemeWithOpenBasedir,
    EmptyStringValidAliasForNoneInMbSubstituteCharacter,
    NumericStringValidArgInMbSubstituteCharacter,
    ParameterTypeWidening,
    AllUnicodeScalarCodePointsInMbSubstituteCharacter,
    PassNoneEncodings,
    RequiredParameterAfterOptionalNullableAndDefaultNull,
    FinalConstants,
    ReadonlyProperties,
    Enums,
    PureIntersectionTypes,
    TentativeReturnTypes,
    ClosureCreation,
    ArrayUnpackingWithStringKeys,
    SerializableRequiresMagicMethods,
    DynamicProperties,
    StrSplitReturnsEmptyArray,
    DisjunctiveNormalForm,
    ReadonlyClasses,
    NeverReturnTypeInArrowFunction,
    PregCaptureOnlyNamedGroups,
    ConstantsInTraits,
    AsymmetricVisibility,
    LazyObjects,
    RequiredParameterAfterOptionalUnionOrMixed,
    DateTimeExceptions,
    TypedClassLikeConstants,
    TypedProperties,
    OverrideAttribute,
    DynamicClassConstantAccess,
    ReadonlyAnonymousClasses,
    CastsNumbersToStringsOnLooseComparison,
    NonNumericStringAndIntegerIsFalseOnLooseComparison,
    AbstractTraitMethods,
    ImplicitlyNullableParameterTypes,
    HighlightStringDoesNotReturnFalse,
    PropertyHooks,
    JsonValidate,
    ClosureInConstantExpressions,
    ArrowFunctions,
    TrueTypeHint,
    FalseTypeHint,
    FalseCompoundTypeHint,
    NullTypeHint,
    NullCompoundTypeHint,
    NullableTypeHint,
    IterableTypeHint,
    VoidTypeHint,
    MixedTypeHint,
    NeverTypeHint,
    StaticReturnTypeHint,
    NewWithoutParentheses,
    ClassLikeConstantVisibilityModifiers,
    ListReferenceAssignment,
    NumericLiteralSeparator,
    AccessClassOnObject,
    Attributes,
    MatchExpression,
    NullSafeOperator,
    TrailingCommaInListSyntax,
    TrailingCommaInFunctionCalls,
    TrailingCommaInClosureUseList,
    NewInInitializers,
    ConstantAttributes,
    CallStaticMethodOnTrait,
    CatchOptionalVariable,
    CatchUnionType,
    VoidCast,
    NoDiscardAttribute,
    AsymmetricVisibilityForStaticProperties,
    ClosureCreationInConstantExpressions,
    DeprecatedAttribute,
    PipeOperator,
    CloneWith,
    PartialFunctionApplication,
    SwitchSemicolonSeparators,
}
